{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Linear Support Vector Machine: Soft Margin\n",
    "----------------------------------\n",
    "\n",
    "This function shows how to use TensorFlow to create a soft margin SVM\n",
    "\n",
    "We will use the iris data, specifically:\n",
    "x1 = Sepal Length\n",
    "x2 = Petal Width\n",
    "\n",
    "Class 1 : I. setosa\n",
    "Class -1: not I. setosa\n",
    "\n",
    "We know here that x and y are linearly seperable for I. setosa classification.\n",
    "\n",
    "Note that we implement the soft margin with an allowable margin of error for points.  The margin of error term is given by 'alpha' below.  To behave like a hard margin SVM, set alpha = 0. (in notebook code block #7)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from sklearn import datasets\n",
    "from tensorflow.python.framework import ops\n",
    "ops.reset_default_graph()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Start a computational graph."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "sess = tf.Session()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Load the data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# iris.data = [(Sepal Length, Sepal Width, Petal Length, Petal Width)]\n",
    "iris = datasets.load_iris()\n",
    "x_vals = np.array([[x[0], x[3]] for x in iris.data])\n",
    "y_vals = np.array([1 if y == 0 else -1 for y in iris.target])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Split data into train/test sets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "train_indices = np.random.choice(len(x_vals),\n",
    "                                 round(len(x_vals)*0.8),\n",
    "                                 replace=False)\n",
    "test_indices = np.array(list(set(range(len(x_vals))) - set(train_indices)))\n",
    "x_vals_train = x_vals[train_indices]\n",
    "x_vals_test = x_vals[test_indices]\n",
    "y_vals_train = y_vals[train_indices]\n",
    "y_vals_test = y_vals[test_indices]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Set model parameters, placeholders, and coefficients."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Declare batch size\n",
    "batch_size = 100\n",
    "\n",
    "# Initialize placeholders\n",
    "x_data = tf.placeholder(shape=[None, 2], dtype=tf.float32)\n",
    "y_target = tf.placeholder(shape=[None, 1], dtype=tf.float32)\n",
    "\n",
    "# Create variables for SVM\n",
    "A = tf.Variable(tf.random_normal(shape=[2, 1]))\n",
    "b = tf.Variable(tf.random_normal(shape=[1, 1]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Declare our model and L2 Norm\n",
    "\n",
    "SVM linear model is given by the equation:\n",
    "\n",
    "$$\\left[ \\frac{1}{n} \\sum_{i=1}^{n} \\max(0, 1 - A \\cdot x - b) \\right] + \\alpha \\cdot ||A||^{2}$$\n",
    "\n",
    "Our loss function will be the above quantity and we will tell TensorFlow to minimize it. Note that $n$ is the number of points (in a batch), $A$ is the hyperplane-normal vector (to solve for), $b$ is the hyperplane-offset (to solve for), and $\\alpha$ is the soft-margin parameter."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Declare model operations\n",
    "model_output = tf.subtract(tf.matmul(x_data, A), b)\n",
    "\n",
    "# Declare vector L2 'norm' function squared\n",
    "l2_norm = tf.reduce_sum(tf.square(A))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here we make our special loss function based on the classification of the points (which side of the line they fall on).\n",
    "\n",
    "Also, note that `alpha` is the soft-margin term and an be increased to allow for more erroroneous classification points.  For hard-margin behaviour, set `alpha = 0`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Declare loss function\n",
    "# Loss = max(0, 1-pred*actual) + alpha * L2_norm(A)^2\n",
    "# L2 regularization parameter, alpha\n",
    "alpha = tf.constant([0.01])\n",
    "# Margin term in loss\n",
    "classification_term = tf.reduce_mean(tf.maximum(0., tf.subtract(1., tf.multiply(model_output, y_target))))\n",
    "# Put terms together\n",
    "loss = tf.add(classification_term, tf.multiply(alpha, l2_norm))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Creat the prediction function, optimization algorithm, and initialize the variables."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Declare prediction function\n",
    "prediction = tf.sign(model_output)\n",
    "accuracy = tf.reduce_mean(tf.cast(tf.equal(prediction, y_target), tf.float32))\n",
    "\n",
    "# Declare optimizer\n",
    "my_opt = tf.train.GradientDescentOptimizer(0.01)\n",
    "train_step = my_opt.minimize(loss)\n",
    "\n",
    "# Initialize variables\n",
    "init = tf.global_variables_initializer()\n",
    "sess.run(init)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can start the training loop."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Step #100 A = [[-0.33496073]\n",
      " [-0.03939554]], b = [[-1.0989387]]\n",
      "Loss = [ 0.5366677]\n",
      "Step #200 A = [[-0.27491847]\n",
      " [-0.33351016]], b = [[-1.1501385]]\n",
      "Loss = [ 0.41086033]\n",
      "Step #300 A = [[-0.22121902]\n",
      " [-0.60417664]], b = [[-1.20213807]]\n",
      "Loss = [ 0.38407847]\n",
      "Step #400 A = [[-0.15989591]\n",
      " [-0.86473054]], b = [[-1.25803792]]\n",
      "Loss = [ 0.33860666]\n",
      "Step #500 A = [[-0.1022057 ]\n",
      " [-1.11257243]], b = [[-1.31473744]]\n",
      "Loss = [ 0.26571095]\n"
     ]
    }
   ],
   "source": [
    "# Training loop\n",
    "loss_vec = []\n",
    "train_accuracy = []\n",
    "test_accuracy = []\n",
    "for i in range(500):\n",
    "    rand_index = np.random.choice(len(x_vals_train), size=batch_size)\n",
    "    rand_x = x_vals_train[rand_index]\n",
    "    rand_y = np.transpose([y_vals_train[rand_index]])\n",
    "    sess.run(train_step, feed_dict={x_data: rand_x, y_target: rand_y})\n",
    "\n",
    "    temp_loss = sess.run(loss, feed_dict={x_data: rand_x, y_target: rand_y})\n",
    "    loss_vec.append(temp_loss)\n",
    "\n",
    "    train_acc_temp = sess.run(accuracy, feed_dict={\n",
    "        x_data: x_vals_train,\n",
    "        y_target: np.transpose([y_vals_train])})\n",
    "    train_accuracy.append(train_acc_temp)\n",
    "\n",
    "    test_acc_temp = sess.run(accuracy, feed_dict={\n",
    "        x_data: x_vals_test,\n",
    "        y_target: np.transpose([y_vals_test])})\n",
    "    test_accuracy.append(test_acc_temp)\n",
    "\n",
    "    if (i + 1) % 100 == 0:\n",
    "        print('Step #{} A = {}, b = {}'.format(\n",
    "            str(i+1),\n",
    "            str(sess.run(A)),\n",
    "            str(sess.run(b))\n",
    "        ))\n",
    "        print('Loss = ' + str(temp_loss))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we extract the linear coefficients and get the SVM boundary line."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Extract coefficients\n",
    "[[a1], [a2]] = sess.run(A)\n",
    "[[b]] = sess.run(b)\n",
    "slope = -a2/a1\n",
    "y_intercept = b/a1\n",
    "\n",
    "# Extract x1 and x2 vals\n",
    "x1_vals = [d[1] for d in x_vals]\n",
    "\n",
    "# Get best fit line\n",
    "best_fit = []\n",
    "for i in x1_vals:\n",
    "    best_fit.append(slope*i+y_intercept)\n",
    "\n",
    "# Separate I. setosa\n",
    "setosa_x = [d[1] for i, d in enumerate(x_vals) if y_vals[i] == 1]\n",
    "setosa_y = [d[0] for i, d in enumerate(x_vals) if y_vals[i] == 1]\n",
    "not_setosa_x = [d[1] for i, d in enumerate(x_vals) if y_vals[i] == -1]\n",
    "not_setosa_y = [d[0] for i, d in enumerate(x_vals) if y_vals[i] == -1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Matplotlib code for plotting"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n+xrHyy+/TPfu3enatSudOnUqTUYXhPvvv58dO3YEtn2wBWUmG9WKcnwjYovMMtQVV1yR1vcvTazm\n/bvYs2cPw4cP55133qFFixbs3r2bNWvW+Lb98u6//34uuOACGjRoEPd77t27l7y8vFSFaGcEJkvZ\nj37lRNJ3S9C4ceMYP348AAMGDOCGG27gqKOOol27dsydOxeInU5627ZtnHDCCfTo0YP8/HxefPFF\nwKW0bt++PRdddBFdunRh3bp1pdv7/vvvKSkp4aCDDgJcHqP27dsDsHHjRk4//XR69epFr169mD9/\nfmmMF154IX369OEnP/kJjzzySMLbv/LKKyksLKRz586MHTsWcMnrvvrqKwYOHMjAgQMBmDp1Kvn5\n+XTp0oUbbrihNO5GjRoxevRounbtysKFCxP+nCsVT4rSoG+WhtokxdJUR4hIUxzts0nVrRINGzas\nUDd27Fi95557VFX1uOOO01GjRqmq6iuvvKInnHCCqsZOJ71nzx4tLi5WVdWNGzdq27Ztdd++fbp6\n9WoVEV24cGHUOC677DJt1qyZnnPOOfrkk0/q3r17VVX13HPP1blz56qq6tq1a7VDhw6lMRYUFOiO\nHTt048aN2qJFCy0qKkpo+6HU1SUlJXrcccfpkiVLVFW1VatWunHjRlVVLSoq0pYtW+q3336re/bs\n0YEDB+q//vUv7ytDn3322ZifbXXSUFvXkMleqhWPUIuLoXHjYOIxcTnttNMA6NmzZ2mXzRtvvMHS\npUtLL0pTXFzMypUradGiBTfddBNz5syhVq1aFBUVlaapbtWqVcw8QH//+99ZtmwZM2bMYPz48bz5\n5ptMmTKFGTNmsHz58tLnbd26lW3epVGHDBlC/fr1qV+/PgMHDuSdd97hlFNOiXv7zz33HJMmTaKk\npIQNGzawfPlyCgoKIuJ69913GTBgAM2aNQPg/PPPZ86cOQwdOpS8vDxOP/306n68UVlDYHJLkybW\nbQQZ/RmEUk7n5eVRUlICUJpOevDgwRHPnTJlChs3buS9996jTp06HHHEEaUpoRtGu6RpmPz8fPLz\n87nwwgtp3bo1U6ZMYd++fSxatIh69epVeL6UO6gQEZ566qm4tr969WrGjx/Pu+++ywEHHMCwYcMS\nTl1dr169lI4LhLMxApPdov3gzZjhfxymWmKlky4uLubggw+mTp06zJo1i7Vr11b5Xtu2bWP27Nml\n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\n46whMMaYHPf/iCvqnkR0HNoAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f723f834d30>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nBboqbDPqcPRnAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f723c2190f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nVIkbzZnSuHFjAD788MNw2bp169h///254opKnc9ERHaIkkIpojWFAQMG8OmnnwKED7R9+eWXGYtL\nRCRdlBRKEU0KAMuXLwdg/vz5AOyxxx4ZiUlEJJ2UFEoRbT4CqFOnDhC5nwBQUc9LiIhUJCWFUsTW\nFAoKCoBtSaGoqCiu7C233IKZVVxwIiJpoKRQitiaQn5+PkA47MX69evjyt57771Jl1dWM2fOzHQI\nIlIJKSmUIramsGHDBqZNm8bUqVOBSC+kZBYtWsT1119fqYfHePPNN+nUqROjRo3KdCgiUskoKZSi\nfv364fy8efPo0qVLeMM5MSlEn1l4/fXXeeihh7j00kvj1k+bNo233347zRGXz7fffgvAnDlzMhyJ\niFQ2SgqliL1HMHz48Lh169evZ/bs2fTq1Yt33303rFVMnz4dgK1bt8aV79KlC2eeeSZ9+/blvPPO\nK3GszZs307lz57Drazpt2LABiE96IiKgpFCmxx9/vMSymjVrsm7dOu677z6++OIL3nvvPWrXrg3A\nN998AxC+fv3112natGm47RtvvMFLL71U4ncavv/+e2bMmMHVV19d7tiGDx/OF198Ue7y48eP5913\n3w2H7UhMCiNHjuT5558v9/5EpPpRUijD5Zdfzn777Re3bM8996SoqIhZs2YBkVpDtDnpp59+AqBW\nrVoA3HTTTaxZs6bEfh977LG432qIlkn17d3dGTlyJBs3bmTDhg0sXbqUwYMH06tXL55//vlwX+PG\njUs5smuPHj049dRT2bhxI1CyNnPRRRcxYMCAUt6NbRK3FZHqQUmhHGJvOMO2C3f0pvPPP/8cNslE\nrV+/nq1bt1KzZvLhpa655hoOOeQQALZs2cKSJZHfG6pXr17S8p999hkXXXQRN910E/vssw9t2mwb\ndXzAgAHcd999FBUV0bNnT/74xz8yefJkioqKmDBhQol9RR/Aix3ob3t+vOjxxx+nTp065OXllXsb\nEaka0jYgXnUSTQqnn346derUoU+fPlx00UXht+XoRTZWXl4eF198MXPnzk2535UrV1JYWEjDhg0p\nLCwEUtcUohfgn3/+mdWrS/7K6ahRo8Kb4ADvvfce//3vf7n99tu59dZbue2228J1EydOBOKTQvTm\nc3ncc889QKRWpCe7RaoXJYVyiD6v0KFDBx566KESF9DoeEiNGzcOn1OYP38+P/74Y5n7/vjjj8OE\n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\nUZvSbScJIK4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f723c0cb8d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "# Plot data and line\n",
    "plt.plot(setosa_x, setosa_y, 'o', label='I. setosa')\n",
    "plt.plot(not_setosa_x, not_setosa_y, 'x', label='Non-setosa')\n",
    "plt.plot(x1_vals, best_fit, 'r-', label='Linear Separator', linewidth=3)\n",
    "plt.ylim([0, 10])\n",
    "plt.legend(loc='lower right')\n",
    "plt.title('Sepal Length vs Pedal Width')\n",
    "plt.xlabel('Pedal Width')\n",
    "plt.ylabel('Sepal Length')\n",
    "plt.show()\n",
    "\n",
    "# Plot train/test accuracies\n",
    "plt.plot(train_accuracy, 'k-', label='Training Accuracy')\n",
    "plt.plot(test_accuracy, 'r--', label='Test Accuracy')\n",
    "plt.title('Train and Test Set Accuracies')\n",
    "plt.xlabel('Generation')\n",
    "plt.ylabel('Accuracy')\n",
    "plt.legend(loc='lower right')\n",
    "plt.show()\n",
    "\n",
    "# Plot loss over time\n",
    "plt.plot(loss_vec, 'k-')\n",
    "plt.title('Loss per Generation')\n",
    "plt.xlabel('Generation')\n",
    "plt.ylabel('Loss')\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
